package bma.common.netty.client;

import bma.common.langutil.ai.stack.AIStack;

public interface NettyClientSender {

	public void beginSend(AIStack<Boolean> stack, NettyClient client);

	public void endSend(NettyClient client);

	/**
	 * 接受消息
	 * 
	 * @param client
	 * @param message
	 * @return 返回true表示已处理，返回false表示无处理/传递到下一个ChannelHandler
	 */
	public boolean messageReceived(NettyClient client, Object message);

	/**
	 * 处理异常事件
	 * 
	 * @param client
	 * @param t
	 * @return 是否处理,返回true表示处理已经结束，不需继续处理
	 */
	public boolean exceptionCaught(NettyClient client, Throwable t);

	public void clientClose(NettyClient client, boolean remoteClose);

}
